/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package familytree.persistencia.dao.hibernate;

import familytree.persistencia.dao.ImagenDAO;
import familytree.persistencia.pojos.Imagen;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Antonio
 */
public class HibernateImagenDAO extends HibernateGenericDAO<Imagen,String> 
            implements ImagenDAO  {

    public List<Imagen> getImagenByFamily(String idArbol) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<Imagen> getImagenByAlbum(String nombreAlbum) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<Imagen> getImagenesRecientes(String idArbol) {
        Transaction tx = getSession().beginTransaction();
        List<Imagen> lista = new ArrayList<Imagen>();
        try{
            String sql = "SELECT i.* ";
            sql += "FROM ((imagen i INNER JOIN usuario u ON i.idUsuario = u.idUsuario) ";
            sql += "INNER JOIN nodo n ON n.idUsuario = u.idUsuario )";
            sql += " WHERE n.idArbol = :idArbol ";
            sql += " ORDER BY i.fecha desc ";
            sql += "LIMIT 24";
            SQLQuery query = getSession().createSQLQuery(sql);
            query.setString("idArbol", idArbol);
            query.addEntity(Imagen.class);
            lista = query.list();
        }
        catch(HibernateException he){
            String s = "";
        }
        return lista;
    }

    public Imagen getImagenById(String idImagen) {
        Transaction tx = getSession().beginTransaction();
        Imagen imagen = null;
        try{
        Criterion criterio1 = Restrictions.eq("idImagen", idImagen);
        List<Imagen> lista = findByCriteria(criterio1);
        if (!lista.isEmpty())
            imagen = lista.get(0);
        }
        catch(HibernateException he){}
        return imagen;
    }
    
    

}
